/**
 * Created by moko1988 on 15/12/1.
 */
define([
    'backbone',
    'models/adManage/list',
    'text!templets/adManage/list.html',
    'text!templets/adManage/list-modal-add.html',
    'text!templets/adManage/list-modal-add-insert.html',
    'text!templets/adManage/list-review.html',
    'text!templets/adManage/list-modal-check.html',
    'text!templets/adManage/list-modal-add-bank.html',
    'utils/dataTableUtil',
    'utils/urlUtil',
    'jquerypage',
    'select2',
    'moment'
], function(
    BackBone,
    Model,
    Tpl,
    ModalAdd,
    ModalAddIn,
    ModalReview,
    ModalCheck,
    ModalAddBank,
    DataTable,
    UrlUtil
) {
    var view = Backbone.View.extend({
        el: '#CONTENT',
        events: {
            'click [role=add]': 'addFun', //添加资源
            'click [role=edit]': 'editFun', //修改资源
            'click [role=delete]': 'deleteFun', //删除资源
            'click [role=find]': 'checkFun', 
            'click [role=add_bank]': 'add_bank', 
            'click [role=save]': 'saveFun', 
            'click [role=saveIn]': 'saveFunIn', 
            'click [role=saveReview]': 'saveFunReview', 
            'click [role=saveBank]': 'saveFunBank', 
            'change #pageSize': 'changePageSize', //选择分页宽度
            'click [role=rank]': 'rank', //排序
            'click [role=review]': 'review', //审核
            'click [role=recommend]': 'recommend', //推荐
            'click #checkAll': 'checkAll', //全选、取消
            'click input[name=idarr]': 'checkItem', //选择、取消单条记录
            'change #ad_category': 'changeListCategory_ad',
            'click [role=search]': 'searchCharge'//查询
        },
        /*初始化*/
        initialize: function() {
            $(this.el).html(Tpl);
            $(this.el).off();
            this.page = '1';
            this.listRows = '10';
            this.idArr = [];
            this.categoryid = '';
            $('#pageSize').select2();
            this.renderCategory_ad();
        } ,
        renderCategory_ad: function(){
            var _this = this;
            Model.fetchCategory_ad({
                type: 'get',
                success: function(map) {
                    //console.log(map);
                    data = map.data;
                    var opts = '<option value="">选择商务</option>',
                        category = {};
                    _.each(data, function(o){
                        category[o.id] = o;
                        opts += '<option value="'+o.id+'">'+ o.name+'</option>';
                    });
                    _this.categoryOpts = opts;
                    _this.categoryObj = category;
                    $('#ad_category').html(opts).prop('disabled',false).select2();
                    // $('#game_category').html(opts).prop('disabled',false).select2();
                    $('[role=add]').prop('disabled',false);
                    _this.render();
                }
            })
        },

        changeListCategory_ad: function(e){
            var $target = $(e.currentTarget);
            this.params["channel"] = $target.val();
        },

        params:{
            channel:""
        },
        searchCharge: function(e){
            var _this = this;
            Model.search({
                type: 'post',
                data: {
                    user_id:  _this.params["channel"],
                    page: this.page,
                    page_size: this.listRows
                },
                success: function(map) {
                    var data = map.list,
                        page = map.page,

                        count = data.length;
                    _this.pageTotal = page.total_page;
                    _.each(data,function(o, i){

                         o.checkbox = '<input type="checkbox" value="'+ o.id +'" name="idarr">';
                    
                        if(o.insert_time!=''){o.insert_time = moment(o.insert_time * 1000).format('YYYY-MM-DD HH:mm')}else{o.insert_time = ''};
                
                        if(o.last_login_time!=''){o.last_login_time = moment(o.last_login_time * 1000).format('YYYY-MM-DD HH:mm')}else{o.last_login_time = ''};

                        if(o.examine_status == 0){
                            o.examine_status = '<font color="red">未审核</font>';
                        }else if(o.examine_status == 1){
                            o.examine_status = '<font color="green">已审核</font>';
                        }
                    })

                    var tableHead = ['<input type="checkbox" id="checkAll">', '序号', '登录账号', '公司名称', '联系人', '所属商务' , '账户余额' , '注册时间',  '最后登录时间','审核状态'],
                        tableBody = _.zip(
                            _.pluck(data,'checkbox'),
                            _.pluck(data,'id'),
                            _.pluck(data,'login_name'),
                            _.pluck(data,'corporate_name'),
                            _.pluck(data,'contacts_name'),
                            _.pluck(data,'name'),
                            _.pluck(data,'balance'),
                            _.pluck(data,'insert_time'),
                            _.pluck(data,'last_login_time'),
                            _.pluck(data,'examine_status')
                        );

                    DataTable.drawTable({
                        '$el': $('#chart_table_div'),
                        'thead': tableHead,
                        'tbody': tableBody
                    });

                    $("#pager").pager({
                        pagenumber: _this.page,
                        pagecount: _this.pageTotal,
                        buttonClickCallback: function(page){
                            _this.pageClick(page);
                        }
                    });
                }
            })
        },
        /*排序*/
        rank: function(e) {
            var $target = $(e.currentTarget),
                type = $target.attr('data-type'),
                id = $target.attr('data-id'),
                _this = this;
            Model.rank({
                data: {
                    id: id,
                    type: type
                },
                success: function() {
                    jAlert('操作成功！', function() {
                        _this.render();
                    });
                }
            })
        },
        /*全选、取消*/
        checkAll: function(e) {
            var $target = $(e.currentTarget),
                isCheck = $target.prop('checked'),
                _this = this;
            if (isCheck) {
                $('input[name=idarr]').prop('checked', true);
                $('input[name=idarr]').each(function() {
                    _this.idArr.push($(this).val());
                })
            } else {
                $('input[name=idarr]').prop('checked', false);
                this.idArr = [];
            }
        },
        /*选择、取消单条记录*/
        checkItem: function() {
            this.idArr = [];
            var isCheckAll = true,
                _this = this;
            $('input[name=idarr]').each(function() {
                if ($(this).prop('checked')) {
                    _this.idArr.push($(this).val());
                } else {
                    isCheckAll = false;
                }
            })
            if (isCheckAll) {
                $('#checkAll').prop('checked', true);
            } else {
                $('#checkAll').prop('checked', false);
            }
        },
        /*选择分页宽度*/
        changePageSize: function(e) {
            var $target = $(e.currentTarget),
                val = $target.val();
            this.listRows = val;
            this.render();
        },
        /*渲染结果列表*/
        render: function() {
            $('#chart_table_div').html(loading);
            var _this = this;
            Model.fetchList({
                type: 'post',
                data: {
                    // ad_id:1,
                    page: this.page,
                    page_size: this.listRows,
                },
                success: function(map) {
                    var data = map.list,
                        page = map.page,

                        count = data.length;
                    _this.pageTotal = page.total_page;
                    _.each(data,function(o, i){

                         o.checkbox = '<input type="checkbox" value="'+ o.id +'" name="idarr">';
                    
                        if(o.insert_time!=''){o.insert_time = moment(o.insert_time * 1000).format('YYYY-MM-DD HH:mm')}else{o.insert_time = ''};
                
                        if(o.last_login_time!=''){o.last_login_time = moment(o.last_login_time * 1000).format('YYYY-MM-DD HH:mm')}else{o.last_login_time = ''};

                        if(o.examine_status == 0){
                            o.examine_status = '<font color="red">未审核</font>';
                        }else if(o.examine_status == 1){
                            o.examine_status = '<font color="green">已审核</font>';
                        }
                    })

                    var tableHead = ['<input type="checkbox" id="checkAll">', '序号', '登录账号', '公司名称', '联系人', '所属商务' , '账户余额' , '注册时间',  '最后登录时间','审核状态'],
                        tableBody = _.zip(
                            _.pluck(data,'checkbox'),
                            _.pluck(data,'id'),
                            _.pluck(data,'login_name'),
                            _.pluck(data,'corporate_name'),
                            _.pluck(data,'contacts_name'),
                            _.pluck(data,'name'),
                            _.pluck(data,'balance'),
                            _.pluck(data,'insert_time'),
                            _.pluck(data,'last_login_time'),
                            _.pluck(data,'examine_status')
                        );

                    DataTable.drawTable({
                        '$el': $('#chart_table_div'),
                        'thead': tableHead,
                        'tbody': tableBody
                    });

                    $("#pager").pager({
                        pagenumber: _this.page,
                        pagecount: _this.pageTotal,
                        buttonClickCallback: function(page){
                            _this.pageClick(page);
                        }
                    });
                }
            })
        },
        /*分页*/
        pageClick: function(page) {
            var _this = this;
            this.page = page;
            $("#pager").pager({
                pagenumber: this.page,
                pagecount: this.pageTotal,
                buttonClickCallback: function(page){
                    _this.pageClick(page);
                }
            });
            this.searchCharge();
        },
       
         addFun: function() {
            $(this.el).append(ModalAddIn);
            var $myModal = $('#myModal');
            $myModal.find('h4').html('添加广告主');
            $myModal.off();
            $myModal.modal();
            $myModal.on('hidden.bs.modal', function(e) {
                $myModal.remove();
            });
        },

        saveFunIn: function() {
            var _this = this,
                $myModal = $('#myModal'),
                $form = $myModal.find('form[role=form]'),
                subBtn = $myModal.find('button[role=saveIn]'),
                isOK = this.checkForm();
            if (isOK) {
                subBtn.html('正在提交..').prop('disabled', true);
                Model.insert({
                    type: 'post',
                    data: $form.serialize(),
                    success: function() {
                        subBtn.html('提 交').prop('disabled', false);
                        jAlert('提交成功', function() {
                            $myModal.modal('hide');
                            _this.render();
                        })
                    }
                })
            }
        },

        /*修改*/
        editFun: function(e){
            $(this.el).append(ModalAdd);
            var $target = $(e.currentTarget),
                $myModal = $('#myModal'),
                id = this.idArr[0],
                _this = this;

           
             if (this.idArr.length) {   
                $myModal.off();
                $myModal.modal();
                $myModal.find('h4').html('修改广告主信息');
                $myModal.find('[role=save]').prop('disabled', true);
                
                 $('#add-category').prop('disabled',false).html(this.categoryOpts);
                /*弹窗关闭*/
                $myModal.on('hidden.bs.modal', function(e) {
                    $myModal.remove();
                });
                $('#loading').html(loading);
                $('#data-form').hide();
 
                Model.fetchInfo({
                    type:'post',
                    data: {
                        id: id
                    },
                    success: function(map) {
                        $myModal.find('input[name=id]').val(id);
                        $myModal.find('input[name=number]').val(map.login_name);
                        $myModal.find('input[name=phone]').val(map.phone);
                        $myModal.find('input[name=corp]').val(map.corporate_name);
                        $myModal.find('input[name=name]').val(map.contacts_name);
                        $myModal.find('input[name=content]').val(map.remarks);
                        $('#loading').html('');
                        $('#data-form').show();
                        $myModal.find('[role=save]').prop('disabled', false);
                    }
                 })
            } else {
                jAlert('请选择要操作的数据');
            }
        },

        saveFun: function() {
            var _this = this,
                $myModal = $('#myModal'),
                $form = $myModal.find('form[role=form]'),
                subBtn = $myModal.find('button[role=save]'),
                isOK = this.checkForm();
            if (isOK) {
                subBtn.html('正在提交..').prop('disabled', true);
                Model.save({
                    type: 'post',
                    data: $form.serialize(),
                    success: function() {
                        subBtn.html('提 交').prop('disabled', false);
                        jAlert('提交成功', function() {
                            $myModal.modal('hide');
                            _this.render();
                        })
                    }
                })
            }
        },

        /*删除*/
        deleteFun: function(e) {
            var $target = $(e.currentTarget),
                id = $target.parents('tr').attr('data-id'),
                _this = this;
            if (this.idArr.length) {
                var id = this.idArr.join(',');
                jConfirm('确定要删除？', function(s) {
                    if (s) {
                        Model.delete({
                            data: {
                                id: id
                            },
                            success: function(map) {
                                jAlert('删除成功', function() {
                                    _this.idArr = [];
                                    _this.render();
                                })
                            }
                        })
                    }
                })
            } else {
                jAlert('请选择要操作的数据');
            }

        },

         /*查看账户信息*/
        checkFun: function(e) {
            $(this.el).append(ModalCheck);
            var $target = $(e.currentTarget),
                $myModal = $('#myModal'),
                id = this.idArr[0],
                _this = this;

             if (this.idArr.length) {   
                $myModal.off();
                $myModal.modal();
                $myModal.find('h4').html('查看账户信息');
                $myModal.on('hidden.bs.modal', function(e) {
                    $myModal.remove();
                });
                $('#loading').html(loading);
                $('#data-form').hide();
 
                Model.fetchBankInfo({
                    data: {
                        id: id
                    },
                    success: function(map) {
                        $myModal.find('input[name=id]').val(id);
                        $myModal.find('input[name=bank]').val(map.deposit_bank);
                        $myModal.find('input[name=number]').val(map.bank_account);
                        $myModal.find('input[name=name]').val(map.payee);
                        $myModal.find('input[name=password]').val(map.pay_password);

                        $('#loading').html('');
                        $('#data-form').show();
                        $myModal.find('[role=save]').prop('disabled', false);
                    }
                 })
            } else {
                jAlert('请选择要操作的数据');
            }

        },

         /*添加账户信息*/
        add_bank: function(e) {
            $(this.el).append(ModalAddBank);
            var $target = $(e.currentTarget),
                $myModal = $('#myModal'),
                id = this.idArr[0],
                _this = this;

             if (this.idArr.length) {   
                $myModal.off();
                $myModal.modal();
                $myModal.find('h4').html('添加账户信息');
                $myModal.on('hidden.bs.modal', function(e) {
                    $myModal.remove();
                });
                $('#loading').html(loading);
                $('#data-form').hide();
 
                Model.fetchBankInfo({
                    data: {
                        id: id
                    },
                    success: function(map) {
                        $myModal.find('input[name=id]').val(id);
                        $myModal.find('input[name=deposit_bank]').val(map.deposit_bank);
                        $myModal.find('input[name=bank_account]').val(map.bank_account);
                        $myModal.find('input[name=payee]').val(map.payee);
                        $myModal.find('input[name=pay_password]').val(map.pay_password);

                        $('#loading').html('');
                        $('#data-form').show();
                        $myModal.find('[role=saveBank]').prop('disabled', false);
                    }
                 })
            } else {
                jAlert('请选择要操作的数据');
            }
        },

        // 保存银行卡信息
        saveFunBank: function() {
            var _this = this,
                $myModal = $('#myModal'),
                $form = $myModal.find('form[role=form]'),
                subBtn = $myModal.find('button[role=saveBank]');
                // isOK = this.checkForm();
            // if (isOK) {
                subBtn.html('正在提交..').prop('disabled', true);
                Model.saveBank({
                    data: $form.serialize(),
                    success: function() {
                        subBtn.html('提 交').prop('disabled', false);
                        jAlert('提交成功', function() {
                            $myModal.modal('hide');
                            _this.render();
                        })
                    }
                })
            // }
        },

         reviewFun: function() {
            // window.location.hash = 'view/article-add'
            $(this.el).append(ModalReview);
            var $myModal = $('#myModal');
            $myModal.find('h4').html('审核广告主');
            $myModal.off();
            $myModal.modal();
            $myModal.on('hidden.bs.modal', function(e) {
                $myModal.remove();
            });
        },

        /*审核*/
        review: function(e){
            var $target = $(e.currentTarget),
                type = $target.attr('data-type'),
                // id = $target.attr('id'),
                _this = this;
            ad_id = '';
            money = '';
                for(var i=0;i<this.idArr.length;i++){
                    if (this.idArr.length) {
                        money+=$('#money'+this.idArr[i]).html();
                        ad_id+=$('#ad_id'+this.idArr[i]).html();
                        money+=',';
                        ad_id+=',';
                    }
                }
            ad_id = ad_id.substr(0,ad_id.length-1);
            money = money.substr(0,money.length-1);
            if (this.idArr.length) {     
                var id = this.idArr.join(',');

                this.reviewFun();

                Model.fetchCategory_ad({
                    type: 'get',
                    data: {
                                id: this.idArr[0]
                            },
                    success: function(map) {
                        data = map.data;
                        //console.log(map);
                        var opts = '<option value="">选择商务</option>',
                            category = {};
                            var _this = this;
                        _.each(data, function(o){
                            category[o.id] = o;
                            if(o.id==map.arr.cid){
                                opts += '<option value="'+o.id+'" selected>'+ o.name+'</option>';
                            }else{
                                opts += '<option value="'+o.id+'">'+ o.name+'</option>';
                            }
                        });
                        _this.categoryOpts = opts;
                        _this.categoryObj = category;
                        $('#AllBusiness').html(opts).prop('disabled',false).select2();
                    }
                });

                //获取单选按钮
                Model.fetchCategory_game({
                    type: 'post',
                    data: {
                                id: id
                            },
                    success: function(map) {
                         $("input[name='0'][value='"+map.examine_status+"']").attr('checked','checked');   
                    }
                })

                
            } else {
                jAlert('请选择要操作的数据');
            }
        },

       saveFunReview : function() {
            var _this = this,
                $myModal = $('#myModal'),
                $form = $myModal.find('form[role=form]'),
                subBtn = $myModal.find('button[role=saveReview]'),
                
                id,
                radioValue,
                selOpt,

                //获取单选框的属性
                radio = $myModal.find('input[name=0]');

                if(radio[1].checked){
                    radioValue = radio[1].value;
                }else{
                    radioValue = radio[0].value;
                }
                 //获取下拉框的值
                   selOpt = $('#AllBusiness option:selected').val();


                isOK = this.checkForm();

                subBtn.html('正在提交..').prop('disabled', true);
                 $myModal.remove();
                Model.review({
                    data: {
                       id: this.idArr[0],
                       radioValue: radioValue,
                       selOpt: selOpt

                    },
                    success: function(map) {
                        jAlert('操作成功！', function() {
                            _this.idArr = [];
                            _this.render();
                        });
                    }
                })

        
        },

         checkForm: function() {
            var $form = $('[role=form]'),
                $number = $form.find('input[name=number]'),
                $phone = $form.find('input[name=phone]'),
                $corp = $form.find('input[name=corp]'),
                $name = $form.find('input[name=name]'),
                $content = $form.find('input[name=content]'),

                getTip = function(e) {
                    var text = e.siblings('label.control-label').html();
                    // text = text.substr(0, text.length - 1);
                    return text;
                },
                errShow = function(e, msg) {
                    var $err = e.siblings('em');
                    $err.html(msg).css("opacity", '1');
                    $err.stop(0, 0).animate({
                        "opacity": 0
                    }, 3500);
                    rest = false;
                },
                rest = true;
            if ($.trim($number.val()) == '') {
                errShow($number, '请填写' + getTip($number));
            } else if ($number.val().length < 2 || $number.val().length > 20) {
                errShow($number, '请填写2-20个字符');
            }

            if ($.trim($corp.val()) == '') {
                errShow($corp, '请填写' + getTip($corp));
            } else if ($corp.val().length < 2 || $corp.val().length > 20) {
                errShow($corp, '请填写2-20个字符');
            }

            if ($.trim($name.val()) == '') {
                errShow($name, '请填写' + getTip($name));
            } else if ($name.val().length < 2 || $name.val().length > 20) {
                errShow($name, '请填写2-20个字符');
            }

            var reg = /^1[3|4|5|7|8][0-9]{9}$/;
            var result = reg.test($phone.val());
            if(!result){
                 errShow($phone, '请填写正确的手机号格式');
            }

            return rest;
        },
    })
    return view;
})

